#pragma once

#include <vex/core/contract/handle.h>

namespace vex { namespace functional {

    struct connection_required {
        enum domain {
            no = 0, yes = 1
        };
    };

    namespace contract {
        struct VEX_ABSTRACT signal_connection 
            : virtual public core::contract::handle 
        {
            virtual void disconnect() = 0;
            VEX_PROTECT_CONTRACT(signal_connection);
        };
    }
}}